﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RegistroMascotas.Modelo;
using Service;

namespace RegistroMascotas
{
    public partial class adoptar_mascota : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                bienvenido2.Text = "Bienvenido " + Session["NickName"].ToString();
                cuentacentro.Visible = true;
               // panelOculto.Visible = false;

                buscarPorCodigo.Visible = true;
             
                try
                {
                    busqDueño.Visible = false;             
                }
                catch (Exception ex)
                {
                    cuentacentro.Visible = false;
                    lblNotificacion.CssClass = "errores";
                    lblNotificacion.Text = ex.Message;
                //   panelOculto.Visible = true;
                }
            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                cargarMascotas();
            }
            catch (Exception ex)
            {
                cuentacentro.Visible = false;
                lblNotificacion.CssClass = "errores";
                lblNotificacion.Text = ex.Message;
            //    panelOculto.Visible = true;
            }
        }

        private void cargarMascotas()
        {
            Mascota m = null;
            List<Mascota> lista = null;

            try
            {
                gvBusqueda.DataSource = null;
                m = GestorDeBusqueda.obtenerMascotaPorCodigoAlternativo(txtBusqueda.Text);

                lista = new List<Mascota>();

                if (m == null) {
                    lblNotificacion.Text = "No se ha encontrado ninguna coincidencia con el criterio de búsqueda.";
                }
                else
                {

                    if (m.Estado == EstadoMascota.En_Adopción.ToString())
                    {
                        lista.Add(m);
                        gvBusqueda.DataSource = lista;
                        gvBusqueda.DataBind();
                    }
                    else
                    {
                        lblNotificacion.Text = "La mascota que busca no se encuentra en estado de adopción.";
                        //panelOculto.Visible = true;
                        cuentacentro.Visible = false;
                    }
                }
            }
            catch (Exception e)
            {
                lblNotificacion.CssClass = "errores";
                lblNotificacion.Text = e.Message;
             //   panelOculto.Visible = true;
                cuentacentro.Visible = false;
            }
        }

        protected void btnModificarMascota_Click(object sender, EventArgs e)
        {
            Button btnModificarMascota = sender as Button;

            try
            {
                Session["Mascota"] =(Mascota)GestorDeBusqueda.obtenerMascotaPorId(int.Parse(btnModificarMascota.CommandArgument));
                busqDueño.Visible = true;
            }
            catch (Exception ex)
            {
                cuentacentro.Visible = false;
                btnModificarMascota.Visible = false;
                lblNotificacion.Text = ex.Message;
                lblNotificacion.CssClass = "errores";
            //    panelOculto.Visible = true;
            }
        }

        protected void asignarDueño_click(object sender, EventArgs e)
        {
            Dueño dueñoElegido = null;
            Mascota m = (Mascota)Session["Mascota"];
            bool exito = false;

            try
            {
                Button btnDueño = (Button)sender;

                int id = int.Parse(btnDueño.CommandArgument);
                dueñoElegido = GestorDeBusqueda.obtenerDueñoPorId(id);

                //asignarlo a la mascota que guardamos
                m.Dueño = dueñoElegido.IdPersona;

                exito = GestorMascota.adoptarMascota(m.IdMascota, m.Dueño);
                
                if (exito)
                {
                    cuentacentro.Visible = false;
                    lblNotificacion.Text = "La mascota ha sido adoptada.";
                 //   panelOculto.Visible = true;
                }
            }
            catch (Exception ex)
            {
                cuentacentro.Visible = false;
                lblNotificacion.Text = ex.Message;
                lblNotificacion.CssClass = "errores";
         //       panelOculto.Visible = true;
            }
        }

        protected void btnBuscarDueño_Click(object sender, EventArgs e)
        {
            try
            {
                cargarDueños();
            }
            catch (Exception ex)
            {
                cuentacentro.Visible = false;
                lblNotificacion.Text = ex.Message;
                lblNotificacion.CssClass = "errores";
              //  panelOculto.Visible = true;
            }
        }

        private void cargarDueños()
        {
            //List<Dueño> listaDueño = null;
            List<Persona> listaPersona = null;
            try
            {
                gvDueños.DataSource = null;
                listaPersona = GestorDeBusqueda.buscaPorDniMatricula(long.Parse(txtBusquedaDueño.Text));
                gvDueños.DataSource = listaPersona;
                gvDueños.DataBind();
            }
            catch (Exception e)
            {
                cuentacentro.Visible = false;
                lblNotificacion.CssClass = "errores";
                lblNotificacion.Text = e.Message;
          //      panelOculto.Visible = true;
            }
        }
    }
}